using System;
using SharpMud.MudLib.SAMPLE.Entities;

namespace SharpMud.MudLib.SAMPLE.Environment
{
#if !Use_Common_MudLib
	public interface IDescribable
	{
		/// <summary>
		/// Used to get the short description of something,
		///  in the shortest form that can descriptively refer to this IDescribable.
        /// Used as a list item for room and inventory contents.
        /// <remarks>
        /// May also be used internally (by the interface implementer) to construct the GetDeclarativeShortDescription()
        /// </remarks>
		/// </summary>
		/// <example>
		/// Examples, depending on implementer:
		///		Item	-	"a shiny broadsword"
		///		Exit	-	"a small wooden door"
		///		Mobile	-	"a friendly stray dog"
		///		Player	-	"Bruce"
		///		Player	-	"Illuminus, the Artificer"
		/// </example>
		string GetShortDescription(ICharacter looker);

		/// <summary>
		/// Used to get the short description of something,
		///  in the form that declares this IDescribable's presence in the room
		/// Used to list this IDescrbable explicitly as something that is in the room,
		/// for a look command.
		/// </summary>
		/// <example>
		/// Examples, depending on implementer:
		///		Item	-	"A shiny broadsword is laying here"
		///		Exit	-	N/A	- returns String.Empty
		///		Mobile	-	"A friendly stray dog is here, nipping at trash"
		///		Player	-	"Bruce is laying down here, recuperating from battle"
		///		Player	-	"Illuminus, the Artificer is standing here"
		/// </example>
		string GetDeclarativeShortDescription(ICharacter looker);

		/// <summary>
		/// Used to get the short description of something,
		///  in the form that declares this IDescribable's presence in the room,
		///  using a full (but single) sentence with narrative style.
		/// Appended to the parent room's long description during a look command.
		/// </summary>
		/// <example>
		/// Examples, depending on implementer:
		///		Item	-	"A shiny broadsword is laying here, obscured by the dust."
		///		Exit	-	"A small wooden door is barely visible to the east."
		///		Mobile	-	"A friendly stray dog is here, sniffing about."
		///		Player	-	N/A - returns String.Empty
		///		Player	-	"The room glows with the presence of an Immortal."
		/// </example>
		string GetIntegralShortDescription(ICharacter looker);

		/// <summary>
		/// Used to get the long description of something,
		///  in the form that declares this IDescribable's presence in the room,
		///  using a full (but single) sentence with narrative style.
		/// </summary>
		string GetLongDescription(ICharacter looker);
	}
#endif
}
